• Jump To … +
    main.js separate.js single.js web-apg-api.js main.js web-conv-api.js ast.js csv.js dangling-else.js display.js flags.js float.js limits.js main.js multiline-mode.js recursive.js replace.js rules.js split.js testonly.js trace.js udt.js unicode.js web-email.js word-boundaries.js main.js phone-number.js web-main.js web-phone-number.js main.js phone-number.js setup.js translate.js xml.js branch-fail-grammar.js main.js parent-mode-grammar.js setup.js universal-mode-grammar.js colors-app.js colors-callbacks.js colors.js main.js more-app.js more-setup.js more.js ast-callbacks.js bad-input.js basic.js ini-file.js main.js parser-callbacks.js setup.js trace.js anbncn.js and.js c-comment.js compound.js main.js nested.js not.js setup.js boundaries-grammar.js boundaries.js comment-grammar.js comment.js main.js negative-grammar.js negative.js positive-grammar.js positive.js setup.js main.js odata-grammar.js run.js setup.js area-code.js lookaround.js main.js phone-number.js setup.js simple.js all-operators.js default.js fancy-number.js limited-lines.js main.js select-operators.js select-rules.js setup.js main.js minimal.js parent-u.js parent.js phone-number.js setup.js stats.js trace.js universal-u.js universal.js callbacks.js grammar.js main.js parser.js writeHtml.js LICENSE.md README.md index.md
  • §

    apg-js-examples

    Description

    This package contains a large set of examples of using apg-js, the JavaScript version of APG, an ABNF Parser Generator. Each example is in its own directory and in that directory is a script, main.sh, which will execute the example. Each example has multiple options. Running the script with no arguments will display a desciption of the example and a detailed list of the options available.

    npm scripts are also available for each of these examples in package.json. For example,

    ./src/ast/main.sh

    and

    npm run ast

    both run the AST test.

    If executing the scripts directly or in with a debugger, they should be excuted from the repository directory for correct relative path name alignment.

    Each of the four libraries, apg-conv-api, apg-lib, apg-api and apg-exp, has been bundled for browser use. Consequently, the examples for each of these libraries contains an example of browser usage. The browser-based example file names will have a “web-“ prefix.

    Note on version 4.2.3

    apg-js-examples version 4.2.3 adds a new example. Previously existing examples are unchanged. The new example is a complete and well-tested URI (RFC 3986) parser.

    npm run uri

    will display a brief description and the help screen. Any URI can be parsed with, for example:

    npm run uri – http://user@example.com

    A large number of unit tests covering many aspects of URI specifics are in the src/uri/__tests__ directory. To execute all of the unit tests run:

    npm run jest

    Note on version 4.2.1

    apg-js version 4.2.1 made a minor change to the parser and hence the parser generator. All of the grammars for all of the examples have been re-generated with apg-js 4.2.1. All of the updated examples run as expected.

    Note on version 4.2.0

    This version has been tested for compliance with apg-js version 4.2.0.

    The new “all” option

    An “all” option has been added to each example which will run all of the demonstrations for that example. Along with this is a new npm script npm run all which will run all demonstrations for all examples. (Caveat: this will generate a lot of output.)

    Even though the demonstrations are meant to be illustrative and not unit tests the “all” options and script have served as a crude means of insuring that nothing was broken with changes to apg-js.

    Installation

    npm

    npm install apg-js-examples
    cd node_modules/apg-js-examples
    npm install
    

    GitHub

    mkdir node_modules
    cd node_modules
    git clone https://github.com/ldthomas/apg-js.git
    git clone https://github.com/ldthomas/apg-js-examples.git
    cd apg-js-examples
    npm install
    

    Code Documentation

    The code documentation is in docco format and can be generated with:

    npm run docco
    

    The documentation is then at ./docs/index.html or see it here at the APG website.